package br.com.linhadotempo.util;

import br.com.linhadotempo.persistence.GerarValidator;
import br.com.taimlain.modelo.Fato;
import br.com.taimlain.modelo.Usuario;

public class Validacoes extends Util {

	static Mensagens msgs = Mensagens.getInstance();

	public static Boolean validaRegistroUsuario(Usuario usuario) {
		try {
			if (validaDados(usuario)) {
				return TRUE;
			}
			return FALSE;
		} catch (Exception e) {
			e.printStackTrace();
			Mensagens.getInstance().setError(e.getCause().getMessage());
			return FALSE;
		}
	}

	/**
	 * Valida os dados de usuario para fins de registro e alteracao de dados.
	 * 
	 * @param usuario
	 *            para efetuar validacao de dados
	 * @return <b>true</b> se todos os dados estiverem validos e <br>
	 *         <b>false</b> se qualquer um dos dados for invalidos
	 */
	@SuppressWarnings("unchecked")
	public static Boolean validaDados(Usuario usuario) {
		try {
			msgs.setErrors(GerarValidator.getInstance().validar(usuario));

			Sessao.put(MESSAGES, msgs);

			if (msgs.getErrors().size() > 0) {
				return FALSE;
			}

			return TRUE;
		} catch (Exception e) {
			e.printStackTrace();
			Mensagens.getInstance().setError(e.getCause().getMessage());
			return FALSE;
		}
	}

	/**
	 * Valida os dados de um fato para fins de registro e alteracao de dados.
	 * 
	 * @param fato
	 *            para efetuar validacao de dados
	 * @return true se dados validos e false se dados invalidos
	 */
	@SuppressWarnings("unchecked")
	public static Boolean validaDados(Fato fato) {
		try {
			msgs.setErrors(GerarValidator.getInstance().validar(fato));

			Sessao.put(MESSAGES, msgs);

			if (msgs.getErrors().size() == 0) {
				return TRUE;
			}

			return FALSE;
		} catch (Exception e) {
			e.printStackTrace();
			Mensagens.getInstance().setError(e.getCause().getMessage());
			return FALSE;
		}
	}

}